package com.example.greetingcard

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
//import com.example.greetingcard.ui.theme.MainTheme

class GreetingCardActivity {
    // Greeting() 函数是一种可组合函数；请留意它上方的 @Composable 注解。
    // 可组合函数会接受一些输入，并生成屏幕上显示的内容。

    // 可组合函数还有一些不同之处。
    // 1. @Composable 函数名称采用首字母大写形式。
    // 2. 需在该函数前面添加 @Composable 注解。
    // 3. @Composable 函数无法返回任何内容

    /*@Composable
    fun Greeting(name: String) {
        Surface(color = Color.Magenta) {
            Text(text = "Hi, my name is $name!", modifier = Modifier.padding(24.dp))
        }
    }*/

    // 您需要使用 Surface 将文本包围起来。Surface 是一个容器，代表界面的某一部分，您可以在其中更改外观（如背景颜色或边框）。


    // DefaultPreview() 函数是一项很酷的功能，让您无需构建整个应用就能查看应用的外观。
    // 若要使其成为预览函数，您需要添加 @Preview 注解。如果 showBackground 设置为 true，则会向应用预览添加背景。
    @Preview(showBackground = true)
    @Composable
    fun GreetingPreview() {
        //Greeting("Meghan")
        //val modifier: Modifier = Modifier.size(100.dp, 150.dp)
        val modifier: Modifier = Modifier.fillMaxSize()
        //GreetingText(message = "Happy Birthday Sam!", from = "From Judy", modifier)
        GreetingImage(message = stringResource(R.string.happy_birthday_text),
            from = stringResource(R.string.signature_text), modifier = modifier)
    }

    @Composable
    fun GreetingText(message: String, from: String, modifier: Modifier = Modifier) {
        Column(
            verticalArrangement = Arrangement.Center,
            // 围绕列添加 8.dp 内边距。最好以 4.dp 为增量使用内边距值。
            modifier = Modifier
                .fillMaxSize()
                .padding(8.dp)
            //modifier = Modifier.padding(8.dp)
        ) {
            Text(text = message, fontSize = 100.sp, lineHeight = 116.sp, textAlign = TextAlign.Center)
            //Text(text = message, fontSize = 100.sp, lineHeight = 116.sp)

            // lineHeight 没有起作用
            // Compose 提供 align 修饰符来单独控制子级可组合项的位置，使其不受父布局强制执行的对齐布局规则的约束
            Text(text = from, fontSize = 36.sp, modifier = Modifier.padding(16.dp).align(Alignment.End))
            // Text(text = from, fontSize = 36.sp, textAlign = TextAlign.End, modifier = Modifier.fillMaxWidth())
        }

        /*Row {
            Text(text = message, fontSize = 30.sp, lineHeight = 116.sp)
            //Text(text = message, fontSize = 100.sp, lineHeight = 116.sp)

            // lineHeight 没有起作用
            Text(text = from, fontSize = 36.sp)
        }*/
    }

    @Composable
    fun GreetingImage(message: String, from: String, modifier: Modifier = Modifier) {
        val image = painterResource(R.drawable.androidparty)
        //Step 3 create a box to overlap image and texts
        Box {
            Image(
                painter = image,
                contentDescription = null,// 无障碍功能
                contentScale = ContentScale.Crop,// 缩放图片
                alpha = 0.5F//不透明度
            )
            GreetingText(
                message = message,
                from = from,
                modifier = Modifier
                    .fillMaxSize()
                    .padding(8.dp)
            )
        }
    }


//@Preview(showBackground = true)
//@Composable
//fun BirthdayCardPreview() {
//    //Greeting("Android")
//    GreetingText(message = "Happy Birthday Cook!", from = "From Emma")
//}


}